from selenium.webdriver.common.by import By
from common.base_page import BasePage

class CartPage(BasePage):
    #结算订单
    sumit_order = (By.XPATH,'//a[text()="结算"]')
    #总价 - 用于断言
    total_price = (By.XPATH,'//div[@class="total-price"]/span')
    #商品选择勾选框 == 注意也要参数化商品名字
    # select_prod = (By.XPATH,'//a[contains(text(),"全球首发限量版跑鞋")]/parent::div/preceding-sibling::div[@class="tab-check"]')
    # 商品的数量  == 注意也要参数化商品名字
    # pro_num = (By.XPATH,'//a[contains(text(),"全球首发限量版跑鞋")]/parent::div/following-sibling::div[@class="tab-number"]//input')

    # 点击结算按钮
    def click_submit_order(self):
        self.click_element(self.sumit_order)

    # 勾选选择商品框 --商品名字要参数化 所以直接写在实例方法里
    def select_prod_box(self,prod_name):
        select_loc = (By.XPATH,f'//a[contains(text(),"{prod_name}")]/parent::div/preceding-sibling::div[@class="tab-check"]')
        self.click_element(select_loc)

    # 获取商品的数量  用于做我的订单的用例的断言
    def get_cart_prod_num(self,prod_name):
        prod_num_loc =(By.XPATH,f'//a[contains(text(),"{prod_name}")]/parent::div/following-sibling::div[@class="tab-number"]//input')
        # 获取元素的 商品数量 ，但是数量不是文本 这个地方是value属性  【如果以后不知道 问前端开发】
        return self.get_attribute(prod_num_loc,"value") # 获取value属性的值  返回值

    # 拿到商品的总结  也是为了做订单 的断言 : 注意： 拿到的文本是 ¥686.00，希望去掉前面的符号,切片方法实现
    def get_total_price(self):
        return self.get_text(self.total_price)[1:]